home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / Developer Essentials Jul 90 / Programming / MPW Interfaces & Libraries 3.1 / PInterfaces / Slots.p < prev    next >
Encoding:
Text File  |  1989-10-13  |  6.9 KB  |  188 lines  |  [TEXT/MPS ]

  1. {
  2. Created: Friday, August 19, 1988 at 5:36 AM
  3.     Slots.p
  4.     Pascal Interface to the Macintosh Libraries
  5.  
  6.     Copyright Apple Computer, Inc.    1986-1988
  7.     All rights reserved
  8. }
  9.  
  10.  
  11. {$IFC UNDEFINED UsingIncludes}
  12. {$SETC UsingIncludes := 0}
  13. {$ENDC}
  14.  
  15. {$IFC NOT UsingIncludes}
  16.     UNIT Slots;
  17.     INTERFACE
  18. {$ENDC}
  19.  
  20. {$IFC UNDEFINED UsingSlots}
  21. {$SETC UsingSlots := 1}
  22.  
  23. {$I+}
  24. {$SETC SlotsIncludes := UsingIncludes}
  25. {$SETC UsingIncludes := 1}
  26. {$IFC UNDEFINED UsingTypes}
  27. {$I $$Shell(PInterfaces)Types.p}
  28. {$ENDC}
  29. {$IFC UNDEFINED UsingOSEvents}
  30. {$I $$Shell(PInterfaces)OSEvents.p}
  31. {$ENDC}
  32. {$IFC UNDEFINED UsingOSUtils}
  33. {$I $$Shell(PInterfaces)OSUtils.p}
  34. {$ENDC}
  35. {$IFC UNDEFINED UsingFiles}
  36. {$I $$Shell(PInterfaces)Files.p}
  37. {$ENDC}
  38. {$SETC UsingIncludes := SlotsIncludes}
  39.  
  40. CONST
  41. fCardIsChanged = 1;                                 {Card is Changed field in StatusFlags field of sInfoArray}
  42. fCkForSame = 0;                                     {For SearchSRT. Flag to check for SAME sResource in the table. }
  43. fCkForNext = 1;                                     {For SearchSRT. Flag to check for NEXT sResource in the table. }
  44. fWarmStart = 2;                                     {If this bit is set then warm start else cold start.}
  45. stateNil = 0;                                        {State}
  46. stateSDMInit = 1;                                    {:Slot declaration manager Init}
  47. statePRAMInit = 2;                                    {:sPRAM record init}
  48. statePInit = 3;                                     {:Primary init}
  49. stateSInit = 4;                                     {:Secondary init}
  50.  
  51.  
  52. TYPE
  53.  
  54. SQElemPtr = ^SlotIntQElement;
  55. SlotIntQElement = RECORD
  56.     sqLink: Ptr;                                    {ptr to next element}
  57.     sqType: INTEGER;                                {queue type ID for validity}
  58.     sqPrio: INTEGER;                                {priority}
  59.     sqAddr: ProcPtr;                                {interrupt service routine}
  60.     sqParm: LONGINT;                                {optional A1 parameter}
  61.     END;
  62.  
  63. SpBlockPtr = ^SpBlock;
  64. SpBlock = PACKED RECORD
  65.     spResult: LONGINT;                                {FUNCTION Result}
  66.     spsPointer: Ptr;                                {structure pointer}
  67.     spSize: LONGINT;                                {size of structure}
  68.     spOffsetData: LONGINT;                            {offset/data field used by sOffsetData}
  69.     spIOFileName: Ptr;                                {ptr to IOFile name for sDisDrvrName}
  70.     spsExecPBlk: Ptr;                                {pointer to sExec parameter block.}
  71.     spStackPtr: Ptr;                                {old Stack pointer.}
  72.     spMisc: LONGINT;                                {misc field for SDM.}
  73.     spReserved: LONGINT;                            {reserved for future expansion}
  74.     spIOReserved: INTEGER;                            {Reserved field of Slot Resource Table}
  75.     spRefNum: INTEGER;                                {RefNum}
  76.     spCategory: INTEGER;                            {sType: Category}
  77.     spCType: INTEGER;                                {Type}
  78.     spDrvrSW: INTEGER;                                {DrvrSW}
  79.     spDrvrHW: INTEGER;                                {DrvrHW}
  80.     spTBMask: SignedByte;                            {type bit mask bits 0..3 mask words 0..3}
  81.     spSlot: SignedByte;                             {slot number}
  82.     spID: SignedByte;                                {structure ID}
  83.     spExtDev: SignedByte;                            {ID of the external device}
  84.     spHwDev: SignedByte;                            {Id of the hardware device.}
  85.     spByteLanes: SignedByte;                        {bytelanes from card ROM format block}
  86.     spFlags: SignedByte;                            {standard flags}
  87.     spKey: SignedByte;                                {Internal use only}
  88.     END;
  89.  
  90. SInfoRecPtr = ^SInfoRecord;
  91. SInfoRecord = PACKED RECORD
  92.     siDirPtr: Ptr;                                    {Pointer to directory}
  93.     siInitStatusA: INTEGER;                         {initialization E}
  94.     siInitStatusV: INTEGER;                         {status returned by vendor init code}
  95.     siState: SignedByte;                            {initialization state}
  96.     siCPUByteLanes: SignedByte;                     {0=[d0..d7] 1=[d8..d15]}
  97.     siTopOfROM: SignedByte;                         {Top of ROM= $FssFFFFx: x is TopOfROM}
  98.     siStatusFlags: SignedByte;                        {bit 0 - card is changed}
  99.     siTOConst: INTEGER;                             {Time Out C for BusErr}
  100.     siReserved: PACKED ARRAY [0..1] OF SignedByte;    {reserved}
  101.     END;
  102.  
  103. SDMRecord = PACKED RECORD
  104.     sdBEVSave: ProcPtr;                             {Save old BusErr vector}
  105.     sdBusErrProc: ProcPtr;                            {Go here to determine if it is a BusErr}
  106.     sdErrorEntry: ProcPtr;                            {Go here if BusErrProc finds real BusErr}
  107.     sdReserved: LONGINT;                            {Reserved}
  108.     END;
  109.  
  110. FHeaderRecPtr = ^FHeaderRec;
  111. FHeaderRec = PACKED RECORD
  112.     fhDirOffset: LONGINT;                            {offset to directory}
  113.     fhLength: LONGINT;                                {length of ROM}
  114.     fhCRC: LONGINT;                                 {CRC}
  115.     fhROMRev: SignedByte;                            {revision of ROM}
  116.     fhFormat: SignedByte;                            {format - 2}
  117.     fhTstPat: LONGINT;                                {test pattern}
  118.     fhReserved: SignedByte;                         {reserved}
  119.     fhByteLanes: SignedByte;                        {ByteLanes}
  120.     END;
  121.  
  122. SEBlock = PACKED RECORD
  123.     seSlot: SignedByte;                             {Slot number.}
  124.     sesRsrcId: SignedByte;                            {sResource Id.}
  125.     seStatus: INTEGER;                                {Status of code executed by sExec.}
  126.     seFlags: SignedByte;                            {Flags}
  127.     seFiller0: SignedByte;                            {Filler, must be SignedByte to align on odd boundry}
  128.     seFiller1: SignedByte;                            {Filler}
  129.     seFiller2: SignedByte;                            {Filler}
  130.     seResult: LONGINT;                                {Result of sLoad.}
  131.     seIOFileName: LONGINT;                            {Pointer to IOFile name.}
  132.     seDevice: SignedByte;                            {Which device to read from.}
  133.     sePartition: SignedByte;                        {The partition.}
  134.     seOSType: SignedByte;                            {Type of OS.}
  135.     seReserved: SignedByte;                         {Reserved field.}
  136.     seRefNum: SignedByte;                            {RefNum of the driver.}
  137.     seNumDevices: SignedByte;                        { Number of devices to load.}
  138.     seBootState: SignedByte;                        {State of StartBoot code.}
  139.     END;
  140.  
  141.  
  142.  
  143. FUNCTION SIntInstall(sIntQElemPtr: SQElemPtr;theSlot: INTEGER): OSErr;
  144. FUNCTION SIntRemove(sIntQElemPtr: SQElemPtr;theSlot: INTEGER): OSErr;
  145. FUNCTION SReadByte(spBlkPtr: SpBlockPtr): OSErr;
  146. FUNCTION SReadWord(spBlkPtr: SpBlockPtr): OSErr;
  147. FUNCTION SReadLong(spBlkPtr: SpBlockPtr): OSErr;
  148. FUNCTION SGetCString(spBlkPtr: SpBlockPtr): OSErr;
  149. FUNCTION SGetBlock(spBlkPtr: SpBlockPtr): OSErr;
  150. FUNCTION SFindStruct(spBlkPtr: SpBlockPtr): OSErr;
  151. FUNCTION SReadStruct(spBlkPtr: SpBlockPtr): OSErr;
  152. FUNCTION SReadInfo(spBlkPtr: SpBlockPtr): OSErr;
  153. FUNCTION SReadPRAMRec(spBlkPtr: SpBlockPtr): OSErr;
  154. FUNCTION SPutPRAMRec(spBlkPtr: SpBlockPtr): OSErr;
  155. FUNCTION SReadFHeader(spBlkPtr: SpBlockPtr): OSErr;
  156. FUNCTION SNextSRsrc(spBlkPtr: SpBlockPtr): OSErr;
  157. FUNCTION SNextTypeSRsrc(spBlkPtr: SpBlockPtr): OSErr;
  158. FUNCTION SRsrcInfo(spBlkPtr: SpBlockPtr): OSErr;
  159. FUNCTION SCkCardStat(spBlkPtr: SpBlockPtr): OSErr;
  160. FUNCTION SReadDrvrName(spBlkPtr: SpBlockPtr): OSErr;
  161. FUNCTION SFindDevBase(spBlkPtr: SpBlockPtr): OSErr;
  162. FUNCTION SFindBigDevBase(spBlkPtr: SpBlockPtr): OSErr;
  163. FUNCTION InitSDeclMgr(spBlkPtr: SpBlockPtr): OSErr;
  164. FUNCTION SPrimaryInit(spBlkPtr: SpBlockPtr): OSErr;
  165. FUNCTION SCardChanged(spBlkPtr: SpBlockPtr): OSErr;
  166. FUNCTION SExec(spBlkPtr: SpBlockPtr): OSErr;
  167. FUNCTION SOffsetData(spBlkPtr: SpBlockPtr): OSErr;
  168. FUNCTION SInitPRAMRecs(spBlkPtr: SpBlockPtr): OSErr;
  169. FUNCTION SReadPBSize(spBlkPtr: SpBlockPtr): OSErr;
  170. FUNCTION SCalcStep(spBlkPtr: SpBlockPtr): OSErr;
  171. FUNCTION SInitSRsrcTable(spBlkPtr: SpBlockPtr): OSErr;
  172. FUNCTION SSearchSRT(spBlkPtr: SpBlockPtr): OSErr;
  173. FUNCTION SUpdateSRT(spBlkPtr: SpBlockPtr): OSErr;
  174. FUNCTION SCalcSPointer(spBlkPtr: SpBlockPtr): OSErr;
  175. FUNCTION SGetDriver(spBlkPtr: SpBlockPtr): OSErr;
  176. FUNCTION SPtrToSlot(spBlkPtr: SpBlockPtr): OSErr;
  177. FUNCTION SFindSInfoRecPtr(spBlkPtr: SpBlockPtr): OSErr;
  178. FUNCTION SFindSRsrcPtr(spBlkPtr: SpBlockPtr): OSErr;
  179. FUNCTION SDeleteSRTRec(spBlkPtr: SpBlockPtr): OSErr;
  180. FUNCTION OpenSlot(paramBlock: ParmBlkPtr;aSync: BOOLEAN): OSErr;
  181.  
  182. {$ENDC}    { UsingSlots }
  183.  
  184. {$IFC NOT UsingIncludes}
  185.     END.
  186. {$ENDC}
  187.  
  188.